import 'package:shared_preferences/shared_preferences.dart';

class TokenManager {
  String? _token;
  final _key = 'enjoy_plus';

  // 为了让实例对象都相等，做了一个处理
  // 1.创建一个私有属性
  static TokenManager? _instance;
  // 2. 定义命名构造函数
  TokenManager._internal();
  // 3. 定义工厂构造函数
  factory TokenManager() {
    // 4. 进行处理，当私有属性为空的时候（也就是没有第一次创建实例的时候）
    // 进行赋值实例对象，当私有属性有值的时候就会一直返回这个私有属性
    _instance ??= TokenManager._internal();
    return _instance!;
  }

  // 初始化
  Future init() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    _token = prefs.getString(_key);
  }

  // 设置token
  Future setToken(String token) async {
    _token = token;
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString(_key, token);
  }

  // 获取token
  String? getToken() {
    return _token;
  }

  // 删除token
  Future removeToken() async {
    _token = null;
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.remove(_key);
  }
}

final tokenManager = TokenManager();
